ক্রিয়েশনাল ডিজাইন প্যাটার্ন (Creational Design Pattern)
ক্রিয়েশনাল ডিজাইন প্যাটার্ন প্রোগ্রামিংয়ে এমন কিছু পদ্ধতি যা অবজেক্ট তৈরির প্রক্রিয়াকে সহজ, কার্যকর এবং ম্যানেজেবল করে তোলে। ক্রিয়েশনাল প্যাটার্নের মূল উদ্দেশ্য হলো অবজেক্ট তৈরি করার প্রক্রিয়াকে নিয়ন্ত্রণ করা যাতে এটি স্পষ্ট, সুশৃঙ্খল এবং সহজে পরিবর্তনযোগ্য হয়।
ক্রিয়েশনাল প্যাটার্নের উদাহরণ:
- সিঙ্গেলটন প্যাটার্ন (Singleton Pattern)
- ফ্যাক্টরি মেথড প্যাটার্ন (Factory Method Pattern)
১. সিঙ্গেলটন প্যাটার্ন (Singleton Pattern)
সিঙ্গেলটন প্যাটার্ন এমন একটি প্যাটার্ন যা নিশ্চিত করে যে একটি নির্দিষ্ট ক্লাসের শুধুমাত্র একটি অবজেক্ট থাকবে এবং প্রোগ্রামজুড়ে এটি একই অবজেক্ট হিসাবে ব্যবহৃত হবে। এটি এমন ক্ষেত্রে ব্যবহৃত হয় যেখানে একটি অবজেক্টের একাধিক কপি থাকা অপ্রয়োজনীয় এবং সম্ভবত ক্ষতিকর হতে পারে।
সিঙ্গেলটন প্যাটার্নের মূল বৈশিষ্ট্য:
- শুধুমাত্র একটি অবজেক্ট তৈরি হয়।
- গ্লোবাল অ্যাক্সেস পয়েন্ট প্রদান করা হয়।
উদাহরণ (Python):
class Singleton:
_instance = None # একটি ক্লাস ভ্যারিয়েবল যেখানে সিঙ্গেলটন অবজেক্ট রাখা হবে
@staticmethod
def get_instance():
if Singleton._instance is None:
Singleton._instance = Singleton()
return Singleton._instance
# ব্যবহার
obj1 = Singleton.get_instance()
obj2 = Singleton.get_instance()
print(obj1 is obj2) # আউটপুট: True, কারণ obj1 এবং obj2 একই অবজেক্ট
২. ফ্যাক্টরি মেথড প্যাটার্ন (Factory Method Pattern)
ফ্যাক্টরি মেথড প্যাটার্ন এমন একটি প্যাটার্ন যা অবজেক্ট তৈরির দায়িত্ব সাবক্লাসগুলির উপর নির্ভর করে। এটি ক্লাসের একটি ফ্যাক্টরি মেথড দ্বারা নির্দিষ্ট টাইপের অবজেক্ট তৈরি করতে সহায়ক হয়। এটি প্রোগ্রামিংয়ে "প্রোডাক্ট টাইপ" অনুযায়ী অবজেক্ট তৈরি করতে কার্যকর।
ফ্যাক্টরি মেথড প্যাটার্নের মূল বৈশিষ্ট্য:
- অবজেক্ট তৈরির জন্য একটি ইন্টারফেস প্রদান করে।
- সাবক্লাস নির্ধারণ করে যে কোন টাইপের অবজেক্ট তৈরি হবে।
উদাহরণ (Python):
from abc import ABC, abstractmethod
# প্রোডাক্ট ইন্টারফেস
class Animal(ABC):
@abstractmethod
def speak(self):
pass
# প্রোডাক্ট ক্লাস
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
# ফ্যাক্টরি ক্লাস
class AnimalFactory:
@staticmethod
def create_animal(animal_type):
if animal_type == "dog":
return Dog()
elif animal_type == "cat":
return Cat()
else:
return None
# ব্যবহার
animal = AnimalFactory.create_animal("dog")
print(animal.speak()) # আউটপুট: Woof!
animal = AnimalFactory.create_animal("cat")
print(animal.speak()) # আউটপুট: Meow!
সিঙ্গেলটন এবং ফ্যাক্টরি মেথডের পার্থক্য
| বৈশিষ্ট্য | সিঙ্গেলটন প্যাটার্ন | ফ্যাক্টরি মেথড প্যাটার্ন |
|---|---|---|
| অবজেক্ট সংখ্যা | একটিমাত্র অবজেক্ট তৈরি করে | একাধিক প্রকারের অবজেক্ট তৈরি করতে পারে |
| উদ্দেশ্য | একক অবজেক্টে গ্লোবাল অ্যাক্সেস প্রদান করা | অবজেক্ট তৈরি প্রক্রিয়াকে নিয়ন্ত্রণ করা |
| ব্যবহার ক্ষেত্র | লগিং, কনফিগারেশন, ডেটাবেজ কানেকশন ইত্যাদি | বিভিন্ন টাইপের অবজেক্ট তৈরির জন্য |
| বাস্তবায়ন পদ্ধতি | একটি স্ট্যাটিক পদ্ধতি যা একক অবজেক্ট ফিরিয়ে দেয় | সাবক্লাস নির্ভর করে, কোন অবজেক্ট তৈরি হবে |
উপসংহার
সিঙ্গেলটন এবং ফ্যাক্টরি মেথড প্যাটার্ন প্রোগ্রামিংয়ের ক্রিয়েশনাল ডিজাইন প্যাটার্নের দুটি গুরুত্বপূর্ণ উদাহরণ। সিঙ্গেলটন একটি নির্দিষ্ট অবজেক্টের একাধিক কপি তৈরি এড়াতে সহায়ক, যেখানে ফ্যাক্টরি মেথড বিভিন্ন টাইপের অবজেক্ট তৈরি করে একটি সাধারণ ইন্টারফেস প্রদান করে। উভয় প্যাটার্ন কোডকে আরও সংগঠিত, কার্যকর এবং পুনঃব্যবহারযোগ্য করে তোলে।
Read more